﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using Dominio;
using Servicios;
namespace EstadisticaProduce.Acuicultura
{
    public partial class frmPreguntas : ObjectPage
    {
        #region Variables
        clsAcuicultura _consultas = new clsAcuicultura();
        string err_mens = string.Empty;
        #endregion

        #region Clases
        public class FactoresAfectan
        {
            public string cod_tipofactor { get; set; }
            public string respuesta { get; set; }
            public string otros { get; set; }
        }

        public class TipoOpinion
        {
            public string cod_tipoopinion { get; set; }
            public string respuesta { get; set; }
        }
        #endregion

        #region Eventos
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack) 
            {
                hdnperiodo.Value = UsuarioSistema.cod_Periodo;
                hdncodestablecimiento.Value = "1";
                hdncodempresa.Value =UsuarioSistema.cod_Empresa;
                hdncodregistro.Value = "0";
                hdnaccion.Value = string.Empty;
            }
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            try { GrabarFactoresAfectaron(); }
            catch (Exception ex)
            {
                err_mens = "Error al grabar:" + ex.Message;
                muestraPnlMensaje(err_mens, 1);
            }
            finally
            {
                muestraPnlMensaje(string.Empty, -1);
            }

        }

        protected void btnLimpia_Click(object sender, EventArgs e)
        {
            LimpiarFactoresAfectan();
        }

        protected void btnLimpiarOpinion_Click(object sender, EventArgs e)
        {
            LimpiarTiposOpinion();
        }

        protected void btnGrabarOpinion_Click(object sender, EventArgs e)
        {
            try { GrabarOpinionEmpresarial(); }
            catch (Exception ex)
            {
                err_mens = "Error al grabar:" + ex.Message;
                muestraPnlMensaje(err_mens, 1);
            }
            finally
            {
                muestraPnlMensaje(string.Empty, -1);
            }
        }
        #endregion

        #region Métodos
        private void muestraPnlMensaje(string _smens, Int32 _iopcion)
        {
            if (_iopcion == 1)
            {
                pnlMensaje.Visible = true;
                lblMensaje.Text = _smens;
            }
            else
            {
                pnlMensaje.Visible = false;
                lblMensaje.Text = string.Empty;
            }
        }

        private void LimpiarFactoresAfectan()
        {
            limpiarCheckBoxList(chklFactores1);
            limpiarCheckBoxList(chklFactores2);
            txtOtrosFact1.Text = string.Empty;
            txtOtrosFact2.Text = string.Empty;
        }

        private void LimpiarTiposOpinion() 
        {
            limpiarRadiobuttonLit(rbl1);
            limpiarRadiobuttonLit(rbl2);
            limpiarRadiobuttonLit(rbl3);
            limpiarRadiobuttonLit(rbl4);
            limpiarRadiobuttonLit(rbl5);
            limpiarRadiobuttonLit(rbl6);
            limpiarRadiobuttonLit(rbl7);
            limpiarRadiobuttonLit(rbl8);
            limpiarCheckBoxList(chkl8);
            rbCapcidad1.Checked = false;
            rbCapcidad2.Checked = false;
            rbCapcidad3.Checked = false;
            rbEmpl1.Checked = false;
            rbEmpl2.Checked = false;
            rbEmpl3.Checked = false;
            rbExpo1.Checked = false;
            rbExpo2.Checked = false;
            rbExpo3.Checked = false;
            rbPrecio1.Checked = false;
            rbPrecio2.Checked = false;
            rbPrecio3.Checked = false;
            rbRealizar1.Checked = false;
            rbRealizar2.Checked = false;
            rbRealizar3.Checked = false;
            rbProd1.Checked = false;
            rbProd2.Checked = false;
            rbProd3.Checked = false;
            rbVentaP1.Checked = false;
            rbVentaP2.Checked = false;
            rbVentaP3.Checked = false;
        }

        private void limpiarCheckBoxList(CheckBoxList chklst) 
        {
            for (int i = 0; i < chklst.Items.Count ; i++)
            {
                chklst.Items[i].Selected = false;
            }
        }

        private void limpiarRadiobuttonLit(RadioButtonList rblst) 
        {
            for (int i = 0; i < rblst.Items.Count ; i++)
            {
                rblst.Items[i].Selected = false;
            }
        }

        private void GrabarFactoresAfectaron() 
        {
            FactoresAfectan entfact;
            List<FactoresAfectan> lstfact = new List<FactoresAfectan>();
            Int32 iresultado = 0;
            try
            {
                for (int j = 0; j < chklFactores1.Items.Count; j++)
                {
                    entfact = new FactoresAfectan();
                    entfact.cod_tipofactor = chklFactores1.Items[j].Value;
                    entfact.respuesta = chklFactores1.Items[j].Selected == true ? "1" : "0";
                    lstfact.Add(entfact);
                }
                //Otros
                entfact = new FactoresAfectan();
                entfact.cod_tipofactor = "P6";
                entfact.respuesta = txtOtrosFact1.Text.Trim() == string.Empty ? "0" : "1";
                entfact.otros = txtOtrosFact1.Text;
                lstfact.Add(entfact);

                for (int i = 0; i < chklFactores2.Items.Count; i++)
                {
                    entfact = new FactoresAfectan();
                    entfact.cod_tipofactor = chklFactores2.Items[i].Value;
                    entfact.respuesta = chklFactores2.Items[i].Selected == true ? "1" : "0";
                    lstfact.Add(entfact);
                }

                entfact = new FactoresAfectan();
                entfact.cod_tipofactor = "P12";
                entfact.respuesta = txtOtrosFact2.Text.Trim() == string.Empty ? "0" : "1";
                entfact.otros = txtOtrosFact2.Text;
                lstfact.Add(entfact);
                
                string saccion = hdnaccion.Value;
                string COD_PERIODO = hdnperiodo.Value;
                string COD_EMPRESA = hdncodempresa.Value;
                string COD_TIPOFACTOR = string.Empty;
                string RESPUESTA = string.Empty;
                string USE_REG = "U09717";
                string USE_MOD = "U09717";

                Hashtable ht;
                foreach (FactoresAfectan ent in lstfact)
                {
                    ht = new Hashtable();
                    ht.Add("COD_PERIODO", COD_PERIODO);
                    ht.Add("COD_EMPRESA", COD_EMPRESA);
                    ht.Add("COD_TIPOFACTOR", ent.cod_tipofactor);
                    ht.Add("RESPUESTA", ent.respuesta);
                    ht.Add("OTROS", ent.otros);
                    ht.Add("USE_REG", USE_REG);
                    ht.Add("USE_MOD", USE_MOD);
                    iresultado = _consultas.InsertaFactoresAfectaron(ht);
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                { LimpiarFactoresAfectan(); }
            }
        }

        private void GrabarOpinionEmpresarial() 
        {
            
            TipoOpinion ent;
            List<TipoOpinion> lst = new List<TipoOpinion>();
            Hashtable ht;
            Int32 iresultado = 0;
            string saccion = hdnaccion.Value;
            string COD_PERIODO = hdnperiodo.Value;
            string COD_EMPRESA = hdncodempresa.Value;
            string COD_TIPOFACTOR = string.Empty;
            string RESPUESTA = string.Empty;
            string USE_REG = "U09717";
            string USE_MOD = "U09717";

            try
            {
                //Pregunta 1
                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl1.Items[0].Value;
                ent.respuesta = rbl1.Items[0].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl1.Items[1].Value;
                ent.respuesta = rbl1.Items[1].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl1.Items[2].Value;
                ent.respuesta = rbl1.Items[2].Selected == true ? "1" : "0";
                lst.Add(ent);


                //Pregunta 2
                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl2.Items[0].Value;
                ent.respuesta = rbl2.Items[0].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl2.Items[1].Value;
                ent.respuesta = rbl2.Items[1].Selected == true ? "1" : "0";
                lst.Add(ent);

                //Pregunta 3
                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl3.Items[0].Value;
                ent.respuesta = rbl3.Items[0].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl3.Items[1].Value;
                ent.respuesta = rbl3.Items[1].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl3.Items[2].Value;
                ent.respuesta = rbl3.Items[2].Selected == true ? "1" : "0";
                lst.Add(ent);

                //Pregunta 4
                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl4.Items[0].Value;
                ent.respuesta = rbl4.Items[0].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl4.Items[1].Value;
                ent.respuesta = rbl4.Items[1].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl4.Items[2].Value;
                ent.respuesta = rbl4.Items[2].Selected == true ? "1" : "0";
                lst.Add(ent);

                //Pregunta 5
                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl5.Items[0].Value;
                ent.respuesta = rbl5.Items[0].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl5.Items[1].Value;
                ent.respuesta = rbl5.Items[1].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl5.Items[2].Value;
                ent.respuesta = rbl5.Items[2].Selected == true ? "1" : "0";
                lst.Add(ent);

                //Pregunta 6
                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl6.Items[0].Value;
                ent.respuesta = rbl6.Items[0].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl6.Items[1].Value;
                ent.respuesta = rbl6.Items[1].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl6.Items[2].Value;
                ent.respuesta = rbl6.Items[2].Selected == true ? "1" : "0";
                lst.Add(ent);

                //Pregunta 7
                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl7.Items[0].Value;
                ent.respuesta = rbl7.Items[0].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl7.Items[1].Value;
                ent.respuesta = rbl7.Items[1].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl7.Items[2].Value;
                ent.respuesta = rbl7.Items[2].Selected == true ? "1" : "0";
                lst.Add(ent);

                //Pregunta 8
                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl8.Items[0].Value;
                ent.respuesta = rbl8.Items[0].Selected == true ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = rbl8.Items[1].Value;
                ent.respuesta = rbl8.Items[1].Selected == true ? "1" : "0";
                lst.Add(ent);

                if (rbl8.Items[0].Selected)
                {
                    for (int i = 0; i < chkl8.Items.Count; i++)
                    {
                        ent = new TipoOpinion();
                        ent.cod_tipoopinion = chkl8.Items[i].Value;
                        ent.respuesta = chkl8.Items[i].Selected == true ? "1" : "0";
                        lst.Add(ent);
                    }
                }

                //Pregunta 9
                //a)
                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P911";
                ent.respuesta = rbProd1.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P912";
                ent.respuesta = rbProd2.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P913";
                ent.respuesta = rbProd3.Checked ? "1" : "0";
                lst.Add(ent);

                //b)
                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P921";
                ent.respuesta = rbVentaP1.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P922";
                ent.respuesta = rbVentaP2.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P923";
                ent.respuesta = rbVentaP3.Checked ? "1" : "0";
                lst.Add(ent);

                //c)
                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P931";
                ent.respuesta = rbExpo1.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P932";
                ent.respuesta = rbExpo2.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P933";
                ent.respuesta = rbExpo3.Checked ? "1" : "0";
                lst.Add(ent);

                //d)
                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P941";
                ent.respuesta = rbEmpl1.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P942";
                ent.respuesta = rbEmpl2.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P943";
                ent.respuesta = rbEmpl3.Checked ? "1" : "0";
                lst.Add(ent);

                //e)
                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P951";
                ent.respuesta = rbCapcidad1.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P952";
                ent.respuesta = rbCapcidad2.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P953";
                ent.respuesta = rbCapcidad3.Checked ? "1" : "0";
                lst.Add(ent);

                //f)
                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P961";
                ent.respuesta = rbPrecio1.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P962";
                ent.respuesta = rbPrecio2.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P963";
                ent.respuesta = rbPrecio3.Checked ? "1" : "0";
                lst.Add(ent);

                //g)
                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P971";
                ent.respuesta = rbRealizar1.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P972";
                ent.respuesta = rbRealizar2.Checked ? "1" : "0";
                lst.Add(ent);

                ent = new TipoOpinion();
                ent.cod_tipoopinion = "P973";
                ent.respuesta = rbRealizar3.Checked ? "1" : "0";
                lst.Add(ent);

                foreach (TipoOpinion entto in lst)
                {
                    ht = new Hashtable();
                    ht.Add("COD_PERIODO", COD_PERIODO);
                    ht.Add("COD_EMPRESA", COD_EMPRESA);
                    ht.Add("COD_TIPOPINION", entto.cod_tipoopinion);
                    ht.Add("RESPUESTA", entto.respuesta);
                    ht.Add("OTROS", string.Empty); //revisar parece que el campo va en la otra tabla
                    ht.Add("USE_REG", USE_REG);
                    ht.Add("USE_MOD", USE_MOD);
                    iresultado = _consultas.InsertaOpinionEmpresarial(ht);
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else 
                {
                    LimpiarTiposOpinion();
                }
            }

        }

        #endregion 

    }
}